부동 소수점 XOR ^ 4.4 = 1.17549e-38 Binary: 01000000000011001100110011001101 ^

당신의 작업은 매우 간단합니다. 두 개의 부동 소수점이 있으면 비트 x 또는 이진 표현을 부동 소수점으로 출력합니다.

예를 들어

Normal: 16.7472 ^ 123.61 = 7.13402e-37
Binary: 01000001100001011111101001000100 ^ 01000010111101110011100001010010 = 00000011011100101100001000010110

Normal: 2.2 ^ 4.4 = 1.17549e-38
Binary: 01000000000011001100110011001101 ^ 01000000100011001100110011001101 = 00000000100000000000000000000000

Normal: 7.898 ^ 3.4444 = 1.47705e-38
Binary: 01000000111111001011110001101010 ^ 01000000010111000110101001111111 = 00000000101000001101011000010101

제한 / 설명 :

  • 입 / 출력은 편리한 방법 으로 제공 할 수 있습니다 .
  • 프로그램은 전체 프로그램이거나 기능 일 수 있습니다. 어느 쪽이든 괜찮습니다.
  • float 유형은 모든 크기가 될 수 있지만 최소 크기는 2 바이트입니다.
  • 표준 허점은 금지되어 있습니다.
  • 가장 짧은 코드가 승리합니다.


답변

x86-64 머신 코드, 4 바이트

0f 57 c1 c3

조립시 :

xorps xmm0, xmm1
ret

두 개의 float 또는 double을 인수 (in xmm0xmm1)로 사용하고 float 또는 double (in xmm0)을 반환 하는 호출 가능 함수입니다 .

이는 Windows x64 x86-64 SysV ABI 의 호출 규칙과 일치하며 float뿐만 아니라 double에도 작동합니다. (XMM 레지스터의 하위 4 또는 8 바이트로 전달 / 반환됩니다).


답변

C ++ (gcc) , 74 32 바이트

#define f(x,y)*(int*)x^=*(int*)y

온라인으로 사용해보십시오!

나는 이전에 C ++에서 골프를 치지 않았으므로 코드 크기를 절반으로 줄이는 데 도움을 주신 모든 사람들에게 감사드립니다! 두 개의 부동 소수점에 대한 포인터를 인수로 사용하고 첫 번째를 수정하여 결과를 반환하는 매크로입니다.

2 바이트를 저장하는 @ 12Me1과 4를 저장하는 @Arnauld에 감사합니다! 또 다른 14 개를 저장 한 @Nishioka, @Neil 추가 6, @AZTECCO 및 @Nishioka 추가 11에 감사드립니다! 5 바이트를 절약 한 @PeterCordes에게 감사합니다!


답변

ARM Thumb 머신 코드, 6 4 바이트

48 40 70 47

조립시 :

EORS R0, R1; 독점 또는 처음 두 매개 변수 중 결과를 반환 레지스터에 저장
BX LR; 링크 레지스터에 저장된 값으로 분기 (반환 주소)

표준 Arm 호출 규칙에 따라 처음 두 매개 변수는 레지스터 R0 및 R1에 전달되고 결과는 R0에 리턴되며 LR은 리턴 주소를 보유합니다. 32 비트 부동 소수점이있는 소프트 부동 ABI를 사용한다고 가정하면 4 바이트 단위로 원하는 작업을 수행합니다.

Cody Gray 덕분에 -2 바이트


답변

파이썬 3 + numpy, 75 59 바이트

lambda x,y:(x.view("i")^y.view("i")).view("f")
import numpy

온라인으로 사용해보십시오!

두 개의 numpy float32 배열을 인수로 사용하고 numpy float32 배열을 반환하는 람다를 정의합니다.

14 바이트를 절약 해 준 @ShadowRanger와 Joel에게 2 더 감사합니다!

내 람다 자체가 기본 numpy 함수가 아닌 numpy 객체에서 메소드를 호출하기 때문에 가져 오기를 삭제할 수 있다면 13 바이트를 더 절약 할 수 있습니다. 코드 골프 표준 규칙에 대해서는 확실하지 않습니다.


답변

젤리 + numpy, 89 77 바이트

“(F(“I^F(“IvF).item()”;"F“¢lẒṾ:/²)Ɓɱ¡vẠ⁷5Rʠ¡7ɼṆṪ{ė4¶Gẉn`¡Ð}ṫȥṄo{b»Ḳ¤¹ṣḢ}jʋƒŒV

온라인으로 사용해보십시오!

numpy 객체로 /로부터 변환해야 할 필요성과 numpy가 Jelly에 의해로드되지 않았기 때문에 __import__()내장 기능을 사용해야한다는 사실 때문에 복제 된 Python 3 코드보다 길다는 의심이 있습니다.

두 개의 수레를 인수로 목록으로 사용하고 부동 수를 리턴하는 모나드 링크

다음 Python 3 코드를 평가합니다.

(__import__('numpy').float32(x).view("i")^__import__('numpy').float32(y).view("i")).view(__import__('numpy').float32).item()

어디서 x그리고 y입력으로 대체됩니다.


답변

APL (Dyalog Unicode) , 14 바이트 SBCS

전체 프로그램. stdin에서 2 개의 IEEE 754 64 비트 부동 소수점 숫자 (binary64)로 구성된 1 열 행렬을 프롬프트합니다. 그러한 숫자 중 하나를 stdout에 인쇄합니다.

645DR≠⌿11DR

온라인으로 사용해보십시오!

 프롬프트 (부동하지 않는 숫자는 함수를 사용하여 부동으로 강제 수 있습니다 ⊃⊢⎕DR⍨645,⍨⎕DR)

11⎕DR 1 비트 이진 (1)로 변환하는 D ATA R epresentation (2 행 64 열의 매트릭스)

≠⌿ 수직 XOR 감소

645⎕DR 64 비트 부동 소수점으로 변환 (5) D ATA R epresentation (단수)


답변

VAX BASIC (나중에 VMS BASIC, Compaq Basic) , 11 바이트

H = F XOR G

나에게 약간 바보 같은 것 같습니다. 분명히 오래된 언어는 강력한 타이핑 문제에 대해 걱정하지 않았기 때문에 더 나아질 것입니다.