二进制运算-十进制与二进制的转换

在学习JDK源码和JAVA一些开源框架源码的时候经常会碰到位运算,要搞懂位运算就得弄明白二进制和十进制之间的转换

一、十进制转换成二进制

1.正整数转换成二进制

十进制整数转换成二进制就是不停的除以二,直到不足二为止(0或者1),然后记录余数,从下往上排列出来就是二进制的值

举个例子:5和8转换成二进制

5的二进制为101,8的二进制为1000

2.负整数转换成二进制

负整数转换成二进制,首先取得它绝对值的正数的二进制,然后取反(0变1,1变0),然后加1

举个例子:-5的二进制(32位计算机中)

第一步:5的二进制101,高位补0之后32位计算机中就是:0000 0000 0000 0000 0000 0000 0000 0101

第二步:取反,1111 1111 1111 1111 1111 1111 1111 1010  (反码)

第三步:加一,1111 1111 1111 1111 1111 1111 1111 1011  (补码)

如果你使用的是windows系统可以拿去验证,比如我是64位系统 -5的二进制是1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1011

3.小数转换成二进制

首先把整数部分转换成二进制,然后把小数位转换(小数为换算每次乘2,不足1为0),最后相加

举个例子:3.15的二进制

第一步:3的二进制11

第二步:0.15的二进制0.001,如图

第三步:相加得11.001

一、二进制转换成十进制

1.二进制转换成十进制整数

举个例子:

101的十进制和 1110的十进制

                 

2.二进制转换成十进制负数

-5的二进制是111 1111 1111 1111 1111 1111 1111 1011,反码是0000 0000 0000 0000 0000 0000 0000 0100,加一是0000 0000 0000 0000 0000 0000 0000 0101,十进制就是5,取相反数则是-5

3.二进制转换成十进制整数

举个例子:3.15的二进制是11.001

原文地址:https://www.cnblogs.com/saltiest/p/11558635.html

时间: 2024-08-29 18:14:00

二进制运算-十进制与二进制的转换的相关文章

20180417_十进制与二进制的转换

一.十进制转二进制 1.正数 十进制转二进制的方法是递归除2,直到商等于0停止,倒序取余数:二进制通常呈4位.8位.16位.32位出现,高位不足补0: 以十进制55为例: 最终得到的二进制数值为  11 0111 ,高位补0最终得到  0011 0111: 2.负数 负数转二进制需要先将负数取反得到正的十进制数值,之后根据正数的规则转换成二进制,再将二进制取反后加1: 以十进制-55为例: ① 取反得到数值55 ② 55转换二进制为 0011 0111 ③ 将 0011 0111 取反得到 11

Java 控制台做个十进制和二进制互相转换

计算机使用的是二进制,计算机只认识0和1 我们日常使用的是十进制,满十进一 既然计算机只认识0和1,那么我们日常使用的计算机时如何操作呢 这就需要一套二进制和十进制互相转换的公式了 首先说十进制转换二进制,就是不断的用十进制的数字除以2,直到十进制的数字最后为0时,将余数倒序排列就是十进制的二进制表示了 如下,十进制数字12转换为二进制 12 / 2 = 6 余数为 0 6 / 2 = 3   余数为 0 3 / 2 = 1   余数为 1 1 / 2 = 0   余数为 1 然后将余数倒序连起

用python写十进制与二进制之间转换

很简单的一段,当练手 def s2e(): e = [0,0,0,0,0,0,0,0] s = int(input("请输入一个十位数:")) for i in range(0,8,1): e[i] = int(s%2) s=s//2 e.reverse() print("二进制数为:",e) def e2s(): s=[0,0,0,0,0,0,0,0] a=0 s=list(input("请输入一个二进制数:")) s.reverse() fo

[Introduction to programming in Java 笔记] 1.3.7 Converting to binary 十进制到二进制的转换

public class Binary { public static void main(String[] args) { // Print binary representation of N. int N = Integer.parseInt(args[0]); int v = 1; while(v <= N/2) v = 2*v; // Now v is the largest power of 2 <= N. int n = N; // current excess while (v

十进制与二进制,八进制,十六进制的转换

(一)数制       计算机采用的是二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供了有利的途径,节省设备等优点,为了便于描述,又常用八.十六进制作为二进制的缩写.特点: (1)逢n进一,n是每种进位进数制表示一位数所需要的符号数目为基数. 二进制:逢二进一,借一当二 八进制:逢八进一,借一当八 十六进制:逢十六进一,借一当十六 (二)数制转换       不同进位计数制之间的转换原则:不同进位计数制之间的转换是根据两个有理数如相等,则两数的整数和分数部分一定分别一定相等的原则进行

二进制、八进制、十进制、十六进制之间转换

一. 十进制与二进制之间的转换 (1) 十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数.下面举例: 例:将十进制的168转换为二进制 得出结果 将十进制的168转换为二进制,(10101000)2 分析:第一步,将168除以2,商84,余数为0. 第二步,将商84除以2,商42余数为0.

C++进制转换(十进制转二进制、八进制、随意进制)

十进制转二进制: //十进制转二进制 #include<iostream> using namespace std; void printbinary(const unsigned int val) { for(int i = 16; i >= 0; i--) { if(val & (1 << i)) cout << "1"; else cout << "0"; } } int main() { prin

十进制与二进制之间的自由转换

#include <stdio.h>#include<stdlib.h>int main(){    int Type,a,b[10],i=0,c=0;    printf("请输入转换类型 1:十进制转二进制:2:二进制转十进制;\n");    scanf("%d",&Type);    printf("请输入原数据\n");    scanf("%d",&a);    switch

二进制 八进制 十进制 十六进制之间的转换

一. 十进制与二进制之间的转换 (1)十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数.下面举例: 例:将十进制的168转换为二进制 得出结果 将十进制的168转换为二进制,(10101000)2 分析:第一步:将168除以2,商84,余数为0.  第二步:将商84除以2,商42余数为0.