zoukankan      html  css  js  c++  java
  • 有符号类型无符号类型转换

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace testBinary
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Convert.ToByte 默认字节表示范围为  0 ~ 255 , 负数,正数,实质表示范围不同。 最高位是符号位,还是无符号位。
    
                Console.WriteLine("0xff 二进制(0 ~ 255):{0}", Convert.ToString(0xff, 2));
    
    
                //-128 ~ 128 转 0 ~ 255 , 将符号位当作数值
                int udata = -42 , data = 214;
                Console.WriteLine("-42转无符号:{0}", -42 & 0xff);
    
                //以上等效 如下:取末七位 ,然后加上第8位数值
                Console.WriteLine((udata & ((1 << 7) - 1))  + Math.Pow(2 , 7));
    
                //以上等效 如下: 取末七位 ,  将第 8 位 置为 1
                Console.WriteLine( (udata & ((1 << 7) - 1)) | (1 << 7));
    
                //以上等效
                Console.WriteLine((udata & ((1 << 8) - 1)));
    
                //以上等效
                Console.WriteLine((udata & 0xff));
    
                //无符号转有符号 , 只针对负数 如 -42
                sbyte ss = (sbyte)1;
                ss = (sbyte)((ss << 7) | (data & ((1 << 7) - 1)));
           // ss = (sbyte)data ; //c# 内部转换 Console.WriteLine("无符号转有符号:{0} {1} (8位表示:{2})", ss, Convert.ToString(ss , 2) , Format(ss)); //加减法运算 //有符号转无符号 Console.WriteLine("加减法运算转无符号:{0}", udata < 0 ? udata + 0xff : udata); //无符号转有符号 Console.WriteLine("加减法运算转无符号:{0}", udata > 127/* 1 << 7 */ ? udata - 0xff : udata); Console.ReadKey(); } /// <summary> /// sbyte 类型转为二进制字符串形式 /// </summary> /// <param name="ss"></param> /// <returns></returns> static string Format(sbyte ss) { char[] str = new char[8]; for (int i = 7; i >= 0; i--) { str[i] = (char)(48 + (ss & 1)) ; ss >>= 1; } return new string(str); } } }
  • 相关阅读:
    使用jvisualvm和飞行记录器分析Java程序cpu占用率过高
    Callable、Future和FutureTask
    CountDownLatch(闭锁)
    ArrayBlockingQueue和LinkedBlockingQueue分析
    并发容器之CopyOnWriteArrayList(转载)
    svn 文件夹 无法提交
    rsync 不能同不子级目录的问题
    nginx 匹配.zip .apk 结尾的文件 直接下载
    Android文件Apk下载变ZIP压缩包解决方案
    nginx: [warn] conflicting server name "locahost" on 0.0.0.0:80, ignored
  • 原文地址:https://www.cnblogs.com/a_bu/p/5534092.html
Copyright © 2011-2022 走看看